package com.lan.seriousphysics.screens.experimentos;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;


import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.lan.seriousphysics.SeriousPhysicsMain;
import com.lan.seriousphysics.screens.AbstractScreen;
import com.lan.seriousphysics.screens.experimentMenus.MRUAScreen;
import com.lan.seriousphysics.screens.experimentMenus.OndasScreen;
import com.lan.seriousphysics.utils.Cronometro;

public class experimental extends AbstractScreen{

	
	Label angulo;
	boolean proceso = false;
	TextButton botonAccion;
	Label tiempo;
	Label altura;
	List<Float> datos;
	Float accAnt;
	Cronometro cr;
	float roll;
	float roll_def;
	
	public experimental(SeriousPhysicsMain game) {
		super(game);
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public void show() {
		super.show();

		previousScreen = new MRUAScreen(game,"MRUA");
		
		setBackground("fondo.png");
		
		Table table = super.getTable();
		Label lTit = new Label(res.getString("STR_LANZAR"), getSkin(), "menus");
		table.add(lTit).spaceBottom(50);
		table.row();
		
		Label version = new Label("v 1", getSkin(), "menus");
		table.add(version).spaceBottom(50);
		table.row();
		
		angulo = new Label("0", getSkin(), "menus");
		table.add(angulo).spaceBottom(50);
		table.row();
		
		botonAccion = new TextButton(res.getString("EMPEZAR_BOT"), getSkin());
		botonAccion.addListener(new InputListener() {
			public boolean touchDown(InputEvent event, float x, float y,
					int pointer, int button) {
				// super.touchUp(event, x, y, pointer, button);
				if (proceso == false) {
					cr = new Cronometro();
					botonAccion.setText(res.getString("PARAR_BOT"));
					roll_def = roll;
					angulo.setText(Float.toString(roll_def));
					altura.setText("Altura: ");
					cr.start();
					proceso = true;
					
				} else {
					
					proceso = false;
					cr.stop();
					tiempo.setText("0:0:0:0");
					altura.setText("Altura: ");
					botonAccion.setText(res.getString("EMPEZAR_BOT"));
					return true;

				}
				return true;

			}

		});

		table.add(botonAccion).size(350, 80).uniform().spaceBottom(10);
		table.row();
		tiempo = new Label("0:0:0:0", getSkin(), "default");
		altura = new Label("Altura: ", getSkin(), "default");
		table.add(tiempo);
		table.row();
		table.add(altura);
		
		
	}
	
	@Override
	public void render(float delta) {
		super.render(delta);

		roll = Gdx.input.getRoll();
		
		
		if (proceso == true) {
			Float accelZ = Gdx.input.getAccelerometerZ();
			tiempo.setText(cr.getTiempo());
			
			if ((accelZ < 0.5)) {

				calculos();

			}

		}

	}
	
	public void calculos()
	{
		
		String tiempoFinal = cr.getTiempo();
		cr.stop();
		proceso = false;
		
		String[] lista;
		lista = tiempoFinal.split(":");
		
		int segundos = Integer.parseInt(lista[2]);
		
		if (segundos>10)
		{			
			tiempo.setText("Demasiado tiempo de caida");

			botonAccion.setText(res.getString("EMPEZAR_BOT"));
			
		} else {

			Double dTiempo = Double.parseDouble((lista[2]+"."+lista[3]));
			//corrector
			//if(dTiempo>0.25){dTiempo = dTiempo - 0.2;}
			
			Double senAng = Math.sin(roll_def-3);
			Double cosAng = Math.cos(roll_def-3);
			Double a = 9.8*(senAng - 0.3*cosAng);
			Double distPlano = a*((dTiempo*dTiempo)/2);
			Double alturaPlano = distPlano*senAng;
			//game.setScreen(new ResultadoCaida(game));
			altura.setText(res.getString("ALTURA") + " "+alturaPlano.toString() + " m - " +res.getString("TIEMPO")+ " " + dTiempo.toString());
			botonAccion.setText(res.getString("EMPEZAR_BOT"));
			
		}
		
	}

}
